//2．编写一个程序，通过命令行参数读取两个二进制字符串，
//对这两个二进制数使用～运算符、&运算符、|运算符和^运算符，
//并以二进制字符串形式打印结果（如果无法使用命令行环境，可以通过交互式让程序读取字符串）。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

//只保留读到非01千的01
//返回字符串长度
int parseString(char *string);
int bittoint(char *pbin);
int main(int size, char **argv) {
    if (size < 2) {
        fputs("Usage p2 00101", stderr);
        exit(EXIT_FAILURE);
    }
    if (parseString(argv[1])==0){
        fputs("Usage p2 00101", stderr);
        exit(EXIT_FAILURE);
    }
    printf("%s to int = %d", argv[1], bittoint(argv[1]));
    return 0;
}


int parseString(char *string) {
    int len = (int) strlen(string);
    for (int i = 0; i < len; ++i) {
        if (!(string[i]=='0'||string[i]=='1')){
            string[i] = '\n';
            return i;
        }
    }
}

int bittoint(char *pbin) {
    int val = 0;
    int now;
    int len = (int) strlen(pbin);
    //左右颠倒移位
    for (int i = len - 1, j = 0; i >= 0; --i, j++) {
        int temp = (pbin[i] - '1' + 1) << j;
        val |= temp;
    }
    return val;
}